Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

218
Vistas
Obteniendo "Error de tipo: no se pueden leer las propiedades de indefinido", pero obtengo 0 valores indefinidos cuando consola.log

Tengo esta función que se supone que debe devolver el nombre de un elemento collection_name que existe dentro de la cuenta de un usuario. En este caso el usuario se llama hola . Esta API devuelve un objeto en este caso, así que lo estoy convirtiendo en una matriz usando object.values . ¿Qué estoy haciendo mal aquí? (Además, el "hola" que se devuelve es solo un marcador de posición, tengo la intención de devolver el nombre de la colección allí.

 import Spinner from '../Spinner'; import { useState, useEffect } from 'react'; function Badges() { const [assets, setAssets] = useState<any[]>(); useEffect(() => { async function fetchData() { const res = await fetch( 'https://proton.api.atomicassets.io/atomicassets/v1/accounts/hello' ); const { data } = await res.json(); setAssets(data); } fetchData(); }, []); if (!assets) { return ( <div> <Spinner /> </div> ); } const messageArray = Object.values(assets); return ( <ul> {messageArray.map((result) => { const { 0: { collection: { collection_name }, }, } = result; console.log(collection_name); return <>hi</>; })} </ul> ); } export default Badges;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Dale una oportunidad a esto. ¿Creo que esto es lo que querías? Sin embargo, podría estar completamente apagado :) De todos modos, se realizaron algunos cambios notables

  • Eliminado const messageArray = Object.values(assets);
  • Se modificó el .map dentro del retorno.

Casi lo tenía, aunque creo que gran parte de la confusión se debió a cómo los datos regresaban de la API. La estructura de los datos parecía un poco confusa... al menos para mí. Para evitar este problema en el futuro, siempre puede respaldar sus respuestas de API con una interfaz de TypeScript.

 import Spinner from '../Spinner'; import { useState, useEffect } from 'react'; interface Assets { collections: CollectionParent[]; templates: Template[]; assets: string; } interface Template { collection_name: string; template_id: string; assets: string; } interface CollectionParent { assets: string; collection: Collection; } interface Collection { allow_notify: boolean; author: string; authorized_accounts: string[]; collection_name: string; contract: string; created_at_block: string; created_at_time: string; img: string; market_fee: number; name: string; } function Badges() { const [assets, setAssets] = useState<Assets>(); useEffect(() => { async function fetchData() { const res = await fetch( "https://proton.api.atomicassets.io/atomicassets/v1/accounts/hello" ); const { data } = await res.json(); setAssets(data); } fetchData(); }, []); if (!assets) { return ( <div> <Spinner /> </div> ); } return ( <ul> {assets?.collections?.length > 0 && assets.collections.map((collectionParent, index) => { return ( <li key={index}>{collectionParent.collection.collection_name}</li> ); })} </ul> ); } export default Badges;

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda